<?php
class error extends main{
	private static $error;
	private static $errorPage = true;

	public static function init() {
		self::$error = array();
                require_once(parent::getConfig('site_directory') .'lang/system/error/error.lang');
		self::$error = $tab_error;
	}

	public static function show($id_message,$fichier,$ligne,$message = null,$log = true) {
		$page = file_get_contents(parent::getConfig('site_directory').'templates/system/error.tpl');
		$show = '   <div class="error">'. self::$error[$id_message] .'<br/><br/>
			    Veuillez contacter l\'administrateur de votre site.<br/>
			    <br/>
			    <a href="mailto:'. parent::getConfig('admin_email') .'">'. parent::getConfig('admin_email') .'</a>
			    </div>';
		$page = str_replace('[block1]', parent::getConfig('site_url') ,$page);
		$page = str_replace('[block2]',$show,$page);

		if($log && main::getConfig('mode') == "dev"){
		    if(!self::log(self::$error[$id_message],$fichier,$ligne,$message)){
			$page .= '<div class="error">Log File rights error</div>';
		    }else{
			$page .= '<div class="error">error logfile <a href="'. parent::getConfig('site_url') .'/error.log" target="_blank">here</a></div>';
		    }
		}elseif($log && main::getConfig('mode') == "prod"){
			if(!self::log(self::$error[$id_message],$fichier,$ligne,$message)){
				$page .= '<div class="error">Log File rights error</div>';
			}
			self::sendMail(self::$error[$id_message], $fichier, $ligne, $message);
		}
		
		if(self::$errorPage)
			return $page;
		else
			return 0;
	}

	public static function log($error,$fichier,$ligne,$message = null) {
		$log = parent::getConfig('site_directory').parent::getConfig("web_directory")."/error.log";
		if(@fopen($log,"a+")){
			$open = @fopen($log,"a+");
			$timestamp=time();
			$date = date('H:i:s d/m/Y' ,$timestamp);
			@fwrite($open,$date.' : '.$error."\n".'fichier : '.$fichier.' | ligne : '.$ligne."\n".'action : '.$message."\n");
			@fclose($open);
			return true;
		}else{
			return false;
		}
	}
	
	public static function sendMail($error, $fichier, $ligne, $message){
		$timestamp=time();
		$date = date('H:i:s d/m/Y' ,$timestamp);
		$mail = "Une erreur a été générée lors d'un appel de page<br/><br/>";
		$mail .= "Erreur : ".$error."<br/>Date : ".$date."<br/>fichier : ".$fichier." | ligne : ".$ligne."<br/>action : ".$message."<br/><br/>";
		$mail .= "Adresse du log file : ".parent::getConfig('site_url')."error.log";
		common::envois_mail(main::getConfig('admin_mail'),"Rapport d'erreur sur ".main::getConfig('site_url'),$mail);
	}
	
	public static function setNoErrorPage(){
		self::$errorPage = false;
	}
};
?>
